package banking;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: 韩学伟
 * @date: 2024/12/22 21:48
 * @描述:银行类
 *
 * */

public class Bank {
    // a.Customer 对象的数组实现这个集合化的关系。
    // 还要保持一个整数属性来跟踪银 行当前有多少客户
    // b.为 Bank 类 增 加 两 个 属 性 ：
    // customers(Customer对象的数组 ) 和
    //numberOfCustomers(整数，跟踪下一个 customers 数组索引)
//    private Customer[] customers; // 客户数组

//    private int numberOfCustomers; // 当前客户数量

    // 1． 将 Customer 属性的声明修改为List 类型，不再使用numberOfCustomers 属性。
    private List<Customer> customers;




    // c.添加公有构造器，以合适的最大尺寸（至少大于 5）初始化 customers 数组。
//    public Bank() {
//        customers = new Customer[10];
//        numberOfCustomers = 0;

//    }
    // 2． 修改 Bank 构造器，将 customers 属性的声明修改为List 类型，不再使用numberOfcustomers 属性
    public Bank() {
        customers = new ArrayList<>();
//        numberOfCustomers = 0;
    }

    public static Bank getBank() {
        return banking;
    }

    // d. 添加 addCustomer 方法。
    // 该方法必须依照参数（姓，名）构造一个新的Customer
    // 对象然后把它放到 customer 数组中。还必须把 numberofCustomers属性的值加 1。
    public void addCustomer(String f, String l) {
//        customers[numberOfCustomers] = new Customer(f, l);
//        numberOfCustomers++;
        //修改 addCustomer 方法，使用 add 方法
        customers.add(new Customer(f, l));
    }
    // e. 添加 getNumOfCustomers 访问方法，它返回 numberofCustomers 属性值。
    public int getNumOfCustomers() {
//        return numberOfCustomers;
        // 修改 getNumofCustomer 方法，使用 size 方法
        return customers.size();
    }
    /**
     * @描述：返回 customers 数组中指定索引位置的 Customer 对象。
     * */
    public Customer getCustomer(int index) {
//        return customers[index];
        // 修改 getCustomer 方法，使用 get 方法
        return customers.get(index);
    }

    // 创建名为 getBanking 的公有静态方法，它返回一个 Bank类的实例。
    public static Bank getBanking() {
        return new Bank();
    }
    // 2． 单个的实例应是静态属性，且为私有。同样，Bank 构造器也应该是私有的
    private static Bank banking = new Bank();
}
